#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>


int g_val = 100;

int main()
{
    printf("I am a parent process, pid: %d, ppid: %d\n", getpid(), getppid());
    pid_t id = fork();
    int cnt = 0;
    if(id == 0)
    {
        // child
        while(1)
        {
            printf("I am a child process, pid: %d, ppid: %d, g_val: %d, &g_val: %p\n", getpid(), getppid(), g_val, &g_val);
            sleep(1);
            cnt++;
            if(cnt == 3)
            {
                g_val = 300;
                printf("I am a child process, change %d -> %d\n", 100, 300);
            }
        }
    }
    else
    {
        // parent       
        while(1)
        {
            printf("I am a parent process, pid: %d, ppid: %d, g_val: %d, &g_val: %p\n", getpid(), getppid(), g_val, &g_val);
            sleep(1);
         }
    
    }
}

//int main(int argc, char* argv[], char* env[])
//{
//    char* path = getenv("PATH");
//    if(path == NULL) return 1;
//    else printf("PATH=%s\n", path);
//    // 方式2:
//    //for(int i = 0; env[i]; i++)
//    //    printf("env[%d]->%s\n", i, env[i]);
//    
//    // 方式1
////    extern char** environ; // 外部声明
////
////    for(int i = 0; environ[i]; i++)
////        printf("env[%d]->%s\n", i, environ[i]);
////
//    return 0;
//}
//





//int g_val = 100;

//int main()
//{
//    printf("father is running, pid: %d, ppid: %d\n", getpid(), getppid());

//    pid_t id = fork();
//    if(id == 0)
//    {
//        //child
//        while(1)
//        {
//            printf("I am child process, pid: %d, ppid: %d. g_val: %d\n", getpid(), getppid(), g_val);
//            sleep(1);
//        }
//    }
//    else
//    {
//        //father
//        while(1)
//        {
//            printf("I am father process, pid: %d, ppid: %d. g_val: %d\n", getpid(), getppid(), g_val);
//            sleep(1);
//        }
//    }
//}




//int main(int argc, char* argv[])
//{
//    if(argc != 2) 
//    {
//        printf("Usage: %s-[a,b,c,d]\n", argv[0]);
//        return 0;
//    }
//
//    if(strcmp(argv[1], "-a") == 0) printf("this is function1\n");
//    else if(strcmp(argv[1], "-b") == 0) printf("this is function2\n");
//    else if(strcmp(argv[1], "-c") == 0) printf("this is function3\n");
//    else if(strcmp(argv[1], "-d") == 0) printf("this is function4\n");
//    else printf("no this function!!\n");
//
//   // for(int i = 0; i < argc; i++)
//   // {
//   //     printf("argv[%d]->%s\n", i, argv[i]);
//   // }
//    return 0;
//}
//
